//localStorage可长期保存在本地浏览器，相较于cookie可以存储更大数据
const storage = {
  /**
   * 存储数据（支持过期时间）
   * @param key
   * @param value
   * @param expire 过期时间，秒
   */
  set(key, value, expire = null) {
    const data = { value };
    if (expire) data.expire = Date.now() + expire * 1000;
    localStorage.setItem(key, JSON.stringify(data));
  },
  /**
   * 读取数据（自动校验过期）
   * @param key
   * @param defaultValue 没有值时返回的默认值
   * @returns {*|null}
   */
  get(key, defaultValue = null) {
    const data = JSON.parse(localStorage.getItem(key));
    if (!data) return defaultValue;
    if (data.expire && Date.now() > data.expire) {
      this.remove(key);
      return defaultValue;
    }
    return data.value;
  },
  /**
   * 删除数据
   * @param key
   */
  remove(key) {
    localStorage.removeItem(key);
  }
};

export default storage;
